1. Field of the Invention
The invention relates to digital information transmission and/or storage methods and systems. More particularly, the invention relates to methods and apparatus for encoding, precoding and decoding digital information transmitted and/or stored within such systems.
2. Description of the Related Art
Data encoding systems and methods add redundancy and/or parity bits to streams of digital data to be transmitted and/or stored to reduce the data's susceptibility to corruption. Data corruption typically occurs in the form of interference, such as intersymbol interference, and/or noise, such as channel noise. Applying error correction coding to data prior to its transmission or storage allows a receiver or data read device to detect and sometimes correct errors introduced into the data by interference and/or noise. In this manner, data encoding systems and methods can reduce or eliminate the need to retransmit or rewrite corrupted data, or to identify data loss if rewriting is not possible. Some types of error correction coding schemes include convolutional coding, block coding, and Reed-Solomon coding.
An important development in the area of soft decoding was the discovery of turbo codes. Turbo codes typically involve an iteratively decodable combination of two or more systematic convolutional or block codes (i.e., convolutional or block codes where the output bits of the encoder include unaltered input bits.) This iterative approach later was applied to a particular class of block codes called Product Codes, resulting in Turbo Product Coding (TPC).
The use of turbo codes often helps to approach channel capacity. Also, another reason for the appeal of turbo codes is the ability to implement turbo codes in integrated circuits with advanced technology process. This feature typically frees system designers of concerns about many issues regarding the internal operation of the turbo coder or decoder.
A conventional coding arrangement includes one or more encoders, such as a modulator or modulation encoder, and/or an ECC encoder (e.g., a Reed-Solomon encoder), and/or a parity encoder (e.g., a TPC encoder), and/or a precoder. The modulation encoder transforms data into codewords according to a given constraint. The modulation encoder constrains the data stream to improve the performance of the channel synchronization and detection.
The ECC encoder typically encodes data to protect it from different channel distortions including random noise and error bursts. For this purpose, the ECC encoder calculates the ECC parity of the codeword and inserts one or more ECC parity symbols into codeword. Thus, the ECC encoder makes codewords distinct enough from one another even in the presence of a certain amount of channel noise. An example of an ECC encoder is a Reed-Solomon encoder. The parity encoder typically calculates the parity of a codeword and inserts one or more parity bits into the codeword. One conventional type of parity encoder is a TPC encoder. The ECC encoder targets to improve frame/symbol error rate, while the parity encoder is designed to improve bit error rate.
The precoder works to improve the performance of any of the above-mentioned error-correction schemes by using one or more transfer functions or other conventional data manipulation techniques. One conventional precoder can be defined by the transfer function 1/(1+D), where D stands for unit delay. Other conventional precoders include, but are not limited to, the precoder defined by the transfer function 1/(1+D2) and/or the precoder defined by the transfer function 1/(1+D3).
When used with the 1/(1+D) precoder, the output from the modulation encoder presents a data stream having a non-return-to-zero inverse (NRZI) waveform shape. That is, the encoder output is in NRZI notation, which means that a “1” designates the recording of a transition and a “0” represents the lack of a transition. In this situation, the 1/(1+D) precoder converts an NRZI data stream into a data stream in non-return-to-zero (NRZ) notation, where a “1” represents a logical high level and a “0” represents a logical low level. In a more general sense, any precoder converts an unprecoded data stream into a channel NRZ data stream.
One concern with many conventional data encoding schemes is that the insertion of parity bits by the parity encoder may violate constraints on the data established by the modulation encoder, especially if the encoded data subsequently pass through a precoder. However, as mentioned previously, precoders are useful for performance improvement.
Accordingly, it would be desirable to have a data encoding method, apparatus and system that provides parity encoding and precoding without violating modulation code constraints.